import { ModuleType } from '../core';

export * from './fs';
export * from './hash';

export function getModuleTypeFromExtname(extname: string) {
  switch (extname) {
    case '.js': return ModuleType.Js;
    case '.jsx': return ModuleType.Jsx;
    case '.ts': return ModuleType.Ts;
    case '.tsx': return ModuleType.Tsx;
    case '.css': return ModuleType.Css;
    default:
      throw new Error(`not support module type ${extname}`);
  }
}

export function isScriptModule(moduleType: ModuleType) {
  return [
    ModuleType.Js,
    ModuleType.Jsx,
    ModuleType.Ts,
    ModuleType.Tsx,
  ].includes(moduleType);
}

export function isCssModule(moduleType: ModuleType) {
  return moduleType === ModuleType.Css;
}

export function isTsModule(moduleType: ModuleType) {
  return moduleType === ModuleType.Ts || moduleType === ModuleType.Tsx;
}

export function isJsxModule(moduleType: ModuleType) {
  return moduleType === ModuleType.Jsx || moduleType === ModuleType.Tsx;
}
